package br.com.sgi.vo;

import java.util.Date;

import br.com.sgi.model.EmailHistorico;
import br.com.sgi.model.Membro;
import br.com.sgi.model.Visitante;
import br.com.sgi.util.DateUtil;

/**
 * @author lucas
 * 
 */
public class MembroVo implements Comparable<MembroVo> {

	private Long coSeqMembro;
	private Long coSeqVisitante;

	private String nome;

	private String email;

	private Date dtNascimento;
	private Date dtAdmissao;

	private String noIgrejaPertence;

	private String noVisitante;

	private boolean inativo;
	private String status;

	private String noMembroResponsavel;
	private String tipoAdmissao;

	private String dtCadastro;
	
	private String numeroResidencial;
	private String celular;
	private String bairro;

	


	/**
	 * @return the celular
	 */
	public String getCelular() {
		return celular;
	}


	/**
	 * @param celular the celular to set
	 */
	public void setCelular(String celular) {
		this.celular = celular;
	}


	private String dtNascimentoExtenso;
	
	private Long coMembroVisitante;
	
	private boolean jaEMembro;
	
	private EmailHistorico emailUltimoHistorico;

	public MembroVo() {
	}


	public MembroVo(Membro membro) {

		this.coSeqMembro = membro.getCoSeqMembro();
		this.nome = membro.getNome().toUpperCase();
		this.dtNascimento = membro.getDtNascimento();
		this.noIgrejaPertence = membro.getIgrejaPertence().getNome();
		this.inativo = membro.getInativo();
		this.status = membro.getInativo() == false ? "Ativo" : "Inativo";
		this.tipoAdmissao = membro.getTipoAdmissao() != null ? membro.getTipoAdmissao()
				.getDescricao() : "-";
		this.dtAdmissao = membro.getDtAdmissao();
		this.email = membro.getEmail();
		jaEMembro = true;
		this.numeroResidencial = membro.getTelefone();
		this.celular = membro.getCelular();
		this.bairro = membro.getBairro();

	}


	public MembroVo(String nome, String email) {

		this.nome = nome;
		this.email = email;

	}

	public MembroVo(Visitante visitante) {

		this.nome = visitante.getNome().toUpperCase();
		this.dtNascimento = visitante.getDtNascimento();
		this.noIgrejaPertence = visitante.getIgrejaPertence().getNome();
		this.inativo = visitante.getInativo();
		this.status = visitante.getInativo() == false ? "Ativo" : "Inativo";
		this.noMembroResponsavel = visitante.getMembroResponsavel() != null ? visitante
				.getMembroResponsavel().getNome() : "";
		this.coSeqVisitante = visitante.getCoSeqVisitante();
		this.email = visitante.getEmail();
		if(visitante.getDtCadastroVisitante() != null)
			this.dtCadastro = DateUtil.getDateStr(visitante.getDtCadastroVisitante());
		jaEMembro = false;
		
		this.numeroResidencial = visitante.getTelefone();
		this.celular = visitante.getCelular();
		this.bairro = visitante.getBairro();

	}

	/**
	 * @return the bairro
	 */
	public String getBairro() {
		return bairro;
	}


	/**
	 * @param bairro the bairro to set
	 */
	public void setBairro(String bairro) {
		this.bairro = bairro;
	}


	@Override
	public int compareTo(MembroVo vo) {
		if (vo != null) {
			return this.getNome().toUpperCase().compareTo(vo.getNome().toUpperCase());
		} else {
			return 0;
		}
	}

	public Long getCoSeqMembro() {
		return coSeqMembro;
	}

	public Long getCoSeqVisitante() {
		return coSeqVisitante;
	}

	public Date getDtAdmissao() {
		return dtAdmissao;
	}

	public String getDtCadastro() {
		return dtCadastro;
	}

	public Date getDtNascimento() {
		return dtNascimento;
	}

	public String getDtNascimentoExtenso() {
		if (dtNascimento != null) {
			dtNascimentoExtenso = DateUtil.getDataAtualPorExtenso(dtNascimento);
		}
		return dtNascimentoExtenso;
	}

	/**
	 * @return the email
	 */
	public String getEmail() {
		return email;
	}

	public String getNoIgrejaPertence() {
		return noIgrejaPertence;
	}

	public String getNome() {
		return nome;
	}

	public String getNoMembroResponsavel() {
		return noMembroResponsavel;
	}

	public String getNoVisitante() {
		return noVisitante;
	}

	public String getStatus() {
		return status;
	}

	public String getTipoAdmissao() {
		return tipoAdmissao;
	}

	public boolean isInativo() {
		return inativo;
	}

	public void setCoSeqMembro(Long coSeqMembro) {
		this.coSeqMembro = coSeqMembro;
	}

	public void setCoSeqVisitante(Long coSeqVisitante) {
		this.coSeqVisitante = coSeqVisitante;
	}

	public void setDtAdmissao(Date dtAdmissao) {
		this.dtAdmissao = dtAdmissao;
	}

	public void setDtCadastro(String dtCadastro) {
		this.dtCadastro = dtCadastro;
	}

	public void setDtNascimento(Date dtNascimento) {
		this.dtNascimento = dtNascimento;
	}

	public void setDtNascimentoExtenso(String dtNascimentoExtenso) {
		this.dtNascimentoExtenso = dtNascimentoExtenso;
	}

	/**
	 * @param email
	 *            the email to set
	 */
	public void setEmail(String email) {
		this.email = email;
	}

	public void setInativo(boolean inativo) {
		this.inativo = inativo;
	}

	public void setNoIgrejaPertence(String noIgrejaPertence) {
		this.noIgrejaPertence = noIgrejaPertence;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public void setNoMembroResponsavel(String noMembroResponsavel) {
		this.noMembroResponsavel = noMembroResponsavel;
	}

	public void setNoVisitante(String noVisitante) {
		this.noVisitante = noVisitante;
	}

	public void setStatus(String status) {
		this.status = status;
	}

	public void setTipoAdmissao(String tipoAdmissao) {
		this.tipoAdmissao = tipoAdmissao;
	}

	/**
	 * @return the coMembroVisitante
	 */
	public Long getCoMembroVisitante() {
		if(coSeqMembro != null)
			coMembroVisitante = coSeqMembro;
		else if(coSeqVisitante != null)
			coMembroVisitante = coSeqVisitante;
		
		return coMembroVisitante;
	}

	/**
	 * @param coMembroVisitante the coMembroVisitante to set
	 */
	public void setCoMembroVisitante(Long coMembroVisitante) {
		this.coMembroVisitante = coMembroVisitante;
	}

	/**
	 * @return the jaEMembro
	 */
	public boolean isJaEMembro() {
		return jaEMembro;
	}

	/**
	 * @param jaEMembro the jaEMembro to set
	 */
	public void setJaEMembro(boolean jaEMembro) {
		this.jaEMembro = jaEMembro;
	}


	/**
	 * @return the emailUltimoHistorico
	 */
	public EmailHistorico getEmailUltimoHistorico() {
		return emailUltimoHistorico;
	}


	/**
	 * @param emailUltimoHistorico the emailUltimoHistorico to set
	 */
	public void setEmailUltimoHistorico(EmailHistorico emailUltimoHistorico) {
		this.emailUltimoHistorico = emailUltimoHistorico;
	}

	/**
	 * @return the numeroResidencial
	 */
	public String getNumeroResidencial() {
		return numeroResidencial;
	}


	/**
	 * @param numeroResidencial the numeroResidencial to set
	 */
	public void setNumeroResidencial(String numeroResidencial) {
		this.numeroResidencial = numeroResidencial;
	}



}
